package cn.iocoder.yudao.module.aiposter.controller.app.poster.vo.req;

import cn.iocoder.yudao.module.aiposter.service.poster.bo.PosterSizeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotNull;

@Schema(description = "AI海报 - 生成推荐海报Plus Request VO")
@Data
public class PosterGeneratePlusReqVO {

    @Schema(description = "背景图", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "http://xxxxx")
    private String pageBgImg;

    @Schema(description = "产品图", requiredMode = Schema.RequiredMode.REQUIRED, example = "http://xxxxx")
    @NotNull(message = "产品图不能为空")
    private String imgUrl;

    @Schema(description = "背景描述", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String prompt;

    @Schema(description = "背景描述NegativePrompt", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String negativePrompt;

    @Schema(description = "图片个数", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "生成图片个数不能为空")
    private Integer imgNumber;

    @Schema(description = "背景类型", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "背景大小不能为空")
    private PosterSizeEnum posterSizeType;

    @Schema(description = "产品背景宽度", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "背景宽度不能为空")
    private Integer pageWidth;

    @Schema(description = "产品背景高度", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "背景高度不能为空")
    private Integer pageHeight;

    @Schema(description = "产品位置X", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "产品位置X不能为空")
    private Integer left;

    @Schema(description = "产品位置Y", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "产品位置Y不能为空")
    private Integer top;

    @Schema(description = "产品宽度", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "产品图展示宽度不能为空")
    private Integer width;

    @Schema(description = "产品高度", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "产品展示高度不能为空")
    private Integer height;

    @Schema(description = "StopAt", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "StopAt不能为空")
    private Float stopAt;

    @Schema(description = "StopAt", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "StopAt不能为空")
    private Float weight;

    @Schema(description = "GuidanceScale", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "GuidanceScale不能为空")
    private Float guidanceScale;
}
